package com.shark.commons.mybatis;

import java.util.List;

import org.apache.ibatis.annotations.Param;


public interface BaseMapper<T> {
	
	int insert(T entity);
	
	int insertSelective(T entity);
	
	int deleteByPrimaryKey(Object id);

    int updateByPrimaryKeySelective(T entity);

    int updateByPrimaryKey(T entity);

    T selectByPrimaryKey(Object id);
    
    List<T> selectAll() ;
    
    /**
	 * 检查字段的值是否已存在
	 * @param id ID可以为NULL，主要用于update操作
	 * @param field coulum名
	 * @param fieldVal column值
	 * @return
	 */
	int existsFileldValue(@Param("id") Long id, @Param("field") String field, @Param("fieldVal") String fieldVal) ;
	
	/**
	 * 批量删除
	 * @param ids 主键
	 * @return
	 */
	int deleteBatchByKeys(Long[] ids) ;
	
	/**
	 * 分页查询
	 * @param entity 实体对象
	 * @return
	 */
	List<T> selectByPage(T entity) ;
}
